// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
function tip (str) {
  // 找到轻提示的盒子
  const toastDiv = document.querySelector('#myToast')
  // 找到显示文字的盒子，并把文字设置为传递进来的文字
  toastDiv.children[0].innerHTML = str

  // 1. 创建轻提示对象
  const toast = new bootstrap.Toast(toastDiv, {
    delay: 1500
  })
  // 2. 调用对象的show方法
  toast.show()
}

// 设置基地址 -- 以后开发都会设置基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'

// 设置用户名
const spanDom = document.querySelector('.navbar-nav span.font-weight-bold')
if (spanDom) {
  spanDom.innerHTML = localStorage.getItem('username97')
}

// 退出
const logout = document.querySelector('#logout')
if (logout) {
  logout.addEventListener('click', function () {
    // 1. 删除本地存储
    localStorage.clear()
    // 2. 跳转到登录页
    location.href = './login.html'
  })
}

// 请求拦截器
// 第一个函数：
// axios发任意请求时会调用的函数，参数config就是本次请求的相关信息
// 第二个函数：没意义，不会用
axios.interceptors.request.use(
  function (config) {
    config.headers.Authorization = localStorage.getItem('token97')
    // return本次请求的相关信息，才代表把这个请求发出去
    // 而且config长什么样，请求就是什么样
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 做数据剥离
    return response.data
  },
  function (error) {
    // 这里触发代码响应出错
    // 如果是401错误，才代表token有问题
    if (error.response.status === 401) {
      // 清空本地存储
      localStorage.clear()
      // 打回登录页
      location.href = './login.html'
    } else {
      return Promise.reject(error)
    }
  }
)
